// 配置axios的基础路径
axios.defaults.baseURL = "http://localhost:8080/"
// 配置vue的axios
Vue.prototype.$http = axios;

//========================= axios前置拦截器 ==================================//
// 发送axios请求之前都会执行以下的代码
axios.interceptors.request.use(res =>{
    // 从localstorage中获取token
    var token = localStorage.getItem("token");
    if(token){ // 如果token有值
        // 携带在请求头发送到后端 - 将token设置到请求头
        res.headers["token"] = token;
    }
    return res;
},error => {
    // 请求拦截
    Promise.reject(error);
})
//========================= axios前置拦截器 ==================================//


//========================= axios后置拦截器 ==================================//
// 发送axios请求之后都会执行以下的代码
axios.interceptors.response.use(res =>{
    if( !res.data.success && "noLogin" === res.data.message){
        localStorage.removeItem("token");
        localStorage.removeItem("logininfo");
        // 跳转到登录页面
        location.href = "/login.html"
    }
    return res;
},error => {
    // 请求拦截
    Promise.reject(error);
})
//========================= axios后置拦截器 ==================================//


//========================= 静态资源拦截器 ==================================//
// 获取请求路径
var url = location.href;
// 如果访问的不是登录页面   并且   也不是注册页面
if(url.indexOf("/login.html") == -1 && url.indexOf("/register.html") == -1
   && url.indexOf("/callback.html") == -1 && url.indexOf("/binder.html") == -1
){
    // 从localStorage中获取登录信息
    var logininfo = localStorage.getItem("logininfo");
    if(!logininfo){ // 如果没有登录信息 - 说明没有登陆过 - 拦截
        location.href = "/login.html"; // 跳转登陆页面
    }
}


//将地址栏？后面的参数装成json对象 - 以后这样的需求很多
function param2JsonObj(url){
    //截取？后面的参数
    var params = url.substring(url.indexOf("?")+1);
    //按照&进行分割 - 获取每一对参数
    var paraArr = params.split("&");//[code=0314GMkl225Gj94lpBnl2BpYxh14GMk6,state=STATE]
    var obj = {};
    for(var i = 0;i<paraArr.length;i++){
        //获取单个参数
        var para = paraArr[i];
        //获取参数名
        var parakey = para.split("=")[0];
        //获取参数值
        var paraValue = para.split("=")[1];
        obj[parakey] = paraValue;
    }
    return obj;
}